package bean;

import Annotations.*;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

@MaxKredit(groups=Kredit.class)
public class Kunde {
    
    @NotNull(message="Es muss ein Name angegeben werden!")
    @Size(min=1, message="Es muss mindestens ein Zeichen eingegeben werden")
    private String name;
    
    @Min(0)
    private BigInteger maxKredit;
    
    @Size(max=4)
    @WithoutDoubles
    private List<Kreditgeber> kredite = new ArrayList<>();
    

    
    
    
    public String getName(){
        return name;
    }
    public void setName(String name){
        this.name = name;
    }
    
    
    public BigInteger getMaxKredit(){
        return maxKredit;
    }
    public void setMaxKredit(BigInteger maxKredit){
        this.maxKredit = maxKredit;
    }
    
    
    public Kreditgeber getKredit(int id){
        return kredite.get(id);
    }
    public void setKredit(Kreditgeber kredit){ 
        kredite.add(kredit);
    }
    // Rollback in der Main
    public void removeLastKredit() {
        kredite.remove(kredite.size()-1);
    }
    // Iteration in MaxKreditValidator
    public int numKreditgeber() {
        return kredite.size();
    }

    
    public String toString(){
        BigInteger summeKredite = new BigInteger("0");
        for(int i=0; i<kredite.size(); i++){
            summeKredite = summeKredite.add( kredite.get(i).getSumme() );
        }
        return "Kunde: " + name + "\tKredit: (" + summeKredite + "/" + maxKredit + ")\tKreditgeber: " + kredite.size();
    }
}
